Pausing and Resuming Playback

You can interrupt playback of a device or file associated with an MCIWnd window by using the MCIWndPauseGNR7LI macro. You can then restart playback by using the MCIWndResumeLGL3.T macro. If the device does not support resume or if an error occurs, you can use the MCIWndPlay18EVXWH macro to restart playback.

The following example creates an MCIWnd window and plays an AVI file. Pause and resume menu commands are available to the user to interrupt and restart playback.

MCIWnd window styles are changed temporarily by using the MCIWndChangeStyles1K1GS48 macro to inhibit an MCI error dialog box from being displayed if MCIWndResumeLGL3.T fails.

case WM_COMMAND:

    switch (wParam)

   

        case IDM_CREATEMCIWND:             // creates and plays clip

            g_hwndMCIWnd = MCIWndCreate(hwnd, 

                g_hinst,                     

                WS_CHILD | WS_VISIBLE |    // standard styles

                MCIWNDF_NOPLAYBAR |        // hides toolbar

                MCIWNDF_NOTIFYMODE,        // notifies of mode changes

                "sample.avi");

 

            MCIWndPlay(g_hwndMCIWnd);

            break;    

        case IDM_PAUSEMCIWND:              // pauses playback

            MCIWndPause(g_hwndMCIWnd);

            MessageBox(hwnd, "MCIWnd", "Pausing Playback", MB_OK);

            break;

        case IDM_RESUMEMCIWND:            // resumes playback

            MCIWndChangeStyles(      // hides error dialog messages

                g_hwndMCIWnd,        // MCIWnd window

                MCIWNDF_NOERRORDLG,  // mask of style to change

                MCIWNDF_NOERRORDLG); // suppresses MCI error dialogs

 

            lResult = MCIWndResume(g_hwndMCIWnd);

 

            if(lResult){                    // device doesn't resume

                MessageBox(hwnd, "MCIWnd",

                    "Resume with Stop and Play", MB_OK);

                MCIWndStop(g_hwndMCIWnd);

                MCIWndPlay(g_hwndMCIWnd);

 

                MCIWndChangeStyles(        // resumes original styles

                    g_hwndMCIWnd,

                    MCIWNDF_NOERRORDLG,

                    NULL);

        }

        break;

    }

    break;

 

// Handle other messages here.